package com.ws.demo.moveZero;

import com.alibaba.fastjson.JSONObject;

public class MoveZeroDemo {

    /**
     * 给定一个数组 nums，编写一个函数将所有 0 移动到数组的末尾，同时保持非零元素的相对顺序。
     * 请注意 ，必须在不复制数组的情况下原地对数组进行操作。
     */
    /**
     * 循环利用新数组指针进行塞值,然后把新数组copy到老数组
     * 只会循环2次 每个值也最多访问2次
     */
    public static void moveZeroes(int[] nums) {
        //新数组的指针
        int j = 0;
        int[] num = new int[nums.length];
        for (int k : nums) {
            if (k != 0) {
                num[j] = k;
                j++;
            }
        }
        System.arraycopy(num, 0, nums, 0, num.length);
    }

    public static void main(String[] args) {
        int[] ints = {0, 1, 0, 3, 12};
        moveZeroes(ints);
        System.out.println(JSONObject.toJSONString(ints));
    }
}
